﻿using System.Text.RegularExpressions;

namespace CentroVentas.Clases
{
    class RUT
    {
        /// <summary>
        /// Resuelve si el rut ingresado es valido.
        /// </summary>
        /// <param name="rut">Rut completo, no importa formato.</param>
        /// <returns>Booleano si el rut ingresado es valido.</returns>
        public static bool Valido(string rut)
        {
            rut = rut.Replace(".", "").ToUpper();
            Regex r = new Regex("^([0-9]+-[0-9K])$");
            if (r.IsMatch(rut))
                return rut.Substring(rut.Length - 1, 1) == Digito(int.Parse(rut.Substring(0, rut.Length - 2)));
            else
                return false;
        }

        /// <summary>
        /// Obtiene el digito verificador.
        /// </summary>
        /// <param name="rut">Rut sin dígitos, guion y puntos.</param>
        /// <returns>String con valor del dígito verificador.</returns>
        public static string Digito(int rut)
        {
            int suma = 0;
            int multiplicador = 1;
            while (rut != 0)
            {
                multiplicador++;
                if (multiplicador == 8)
                    multiplicador = 2;
                suma += (rut % 10) * multiplicador;
                rut = rut / 10;
            }
            suma = 11 - (suma % 11);
            if (suma == 11)
                return "0";
            else if (suma == 10)
                return "K";
            else
                return suma.ToString();
        }
    }
}
